// wordbook.js - 单词宝库页面的逻辑
// 已由各组件自行管理数据与逻辑，无需在页面层引入数据管理器
const storageManager = require('../../../manager/storageManager').getInstance();

Page({
  data: {
    // 选项卡状态
    activeTab: 'textbook', // 'textbook', 'wordCategory', 'import'
    // 加载状态
    isLoading: false,
    loadingText: '加载中...',
    // 总单词数
    totalWords: 0
  },

  // 页面加载
  onLoad: function() {
    this.initData();
  },

  // scroll-view滚动处理
  onScrollViewScroll(e) {
    const pageHeader = this.selectComponent('.page-header');
    if (pageHeader && pageHeader.handlePageScroll) {
      pageHeader.handlePageScroll(e.detail);
    }
  },

  // 初始化数据
  initData: function() {
    this.setLoading(true, '加载数据中...');
    
    try {
      // 页面层无需加载业务数据，组件会在内部加载
      this.calculateTotalWords();
    } catch (error) {
      console.error('初始化数据失败:', error);
      wx.showToast({
        title: '数据加载失败',
        icon: 'none'
      });
    } finally {
      this.setLoading(false);
    }
  },

  // 计算总单词数
  calculateTotalWords: function() {
    try {
      const dm = getApp().globalData.wordDataManager;
      const allBooks = dm.getAllBooks();
      let total = 0;
      allBooks.forEach(b => { total += (dm.getWordsByBookId(b.id) || []).length; });
      this.setData({ totalWords: total });
    } catch (error) {
      console.error('计算总单词数失败:', error);
      this.setData({ totalWords: 0 });
    }
  },
  
  // 设置加载状态
  setLoading: function(isLoading, text = '加载中...') {
    this.setData({
      isLoading,
      loadingText: text
    });
  },

  // 切换选项卡
  switchTab: function(e) {
    // 支持组件事件与原生点击两种来源
    const tab = (e && e.detail && e.detail.tab) || (e && e.currentTarget && e.currentTarget.dataset && e.currentTarget.dataset.tab);
    if (tab) {
      this.setData({ activeTab: tab });
    }
  },

  // 下拉刷新，触发子组件重新加载数据
  onPullDownRefresh: function() {
    wx.showLoading({ title: '刷新中...' });

    // 调用通用刷新方法
    this.onRefresh();

    wx.hideLoading();
    wx.stopPullDownRefresh();
  },
  
  // 刷新列表
  onRefresh: function() {
    console.log('触发列表刷新');
    
    // 先计算总单词数，确保数据是最新的
    this.calculateTotalWords();
    
    // 获取需要刷新的组件实例并调用其onRefresh方法
    const components = ['wb-book-list', 'wb-category-list', 'wb-import-section'];
    components.forEach(compName => {
      this._refreshComponent(compName);
    });

    // 强制重新渲染页面数据
    this.setData({
      activeTab: this.data.activeTab // 触发页面重新渲染
    });
    
    console.log('列表刷新完成');
  },
  
  // 尝试多种方式刷新组件
  _refreshComponent: function(compName) {
    // 尝试多种选择器格式
    const selectors = [
      `.${compName}`,
      `#${compName}`,
      `[data-component="${compName}"]`,
      compName
    ];
    
    let componentFound = false;
    for (const selector of selectors) {
      const component = this.selectComponent(selector);
      if (component && component.onRefresh) {
        // console.log(`刷新组件: ${compName} (通过选择器 ${selector})`);
        component.onRefresh();
        componentFound = true;
        break;
      } else {
        // console.log(`组件 ${compName} 未找到或未实现 onRefresh 方法 (通过选择器 ${selector})`);
      }
    }
    
    if (!componentFound) {
      console.log(`未找到组件: ${compName}`);
    }
  },

  // 页面显示时触发，确保从学习页面返回时能正确更新数据
  onShow: function() {
    try {
      // 检查是否有需要更新的单词信息
      const lastLearnedWordInfo = storageManager.getStorage(storageManager.STORAGE_KEYS.LAST_LEARNED_WORD_INFO);
      if (lastLearnedWordInfo) {
        console.log('检测到需要更新的学习信息:', lastLearnedWordInfo);
        // 重新计算总单词数
        this.calculateTotalWords();
        // 清除更新标志
        storageManager.removeStorage(storageManager.STORAGE_KEYS.LAST_LEARNED_WORD_INFO);
        console.log('已更新总单词数');
        
        // 刷新子组件数据，确保组件内的平均进度也更新
        const components = ['wb-book-list', 'wb-category-list', 'wb-import-section'];
        components.forEach(compName => {
          this._refreshComponent(compName);
        });
      } else {
        // 如果不需要更新，再调用initData确保数据完整
        this.initData();
      }
    } catch (error) {
      console.error('检查更新信息失败:', error);
      this.initData();
    }
  },
  
  // 转发给朋友
  onShareAppMessage: function() {
    return {
      title: '拾刻学习 - 单词宝库',
      path: '/pages/vocabulary/wordbook/wordbook',
      // imageUrl: '/images/book2.png'
    };
  },
  
  // 分享到朋友圈
  onShareTimeline: function() {
    return {
      title: '拾刻学习 - 单词宝库',
      query: 'from=timeline',
      // imageUrl: '/images/book2.png'
    };
  }
})
;